package com.quan.common.utils.image;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.imageio.stream.FileImageInputStream;

import cn.hutool.core.codec.Base64;

public class Base64Util {
	/**
	 * 字符串转图片
	 *
	 * @param base64Str
	 * @return
	 */
	public static byte[] decode(String base64Str) {
		byte[] b = null;
		b = Base64.decode(replaceEnter(base64Str));
		
		//BASE64Decoder decoder = new BASE64Decoder();
		//b = decoder.decodeBuffer(replaceEnter(base64Str));
		return b;
	}

	/**
	 * 图片转字符串
	 *
	 * @param image
	 * @return
	 */
	public static String encode(byte[] image) {
		//BASE64Encoder decoder = new BASE64Encoder();
		return replaceEnter(Base64.encode(image));
	}

	public static String encode(String uri) {
		//BASE64Encoder encoder = new BASE64Encoder();
		//return replaceEnter(encoder.encode(uri.getBytes()));
		return replaceEnter(Base64.encode(uri.getBytes()));
	}

	/**
	 * @return
	 * @path 图片路径
	 */

	public static byte[] imageTobyte(String path) {
		byte[] data = null;
		FileImageInputStream input = null;
		try {
			input = new FileImageInputStream(new File(path));
			ByteArrayOutputStream output = new ByteArrayOutputStream();
			byte[] buf = new byte[1024];
			int numBytesRead = 0;
			while ((numBytesRead = input.read(buf)) != -1) {
				output.write(buf, 0, numBytesRead);
			}
			data = output.toByteArray();
			output.close();
			input.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return data;
	}

	public static String replaceEnter(String str) {
		String reg = "[\n-\r]";
		Pattern p = Pattern.compile(reg);
		Matcher m = p.matcher(str);
		return m.replaceAll("");
	}

}